home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Garbo
/
Garbo.cdr
/
mac
/
source
/
dialgmgr.sit
/
Dialogs ƒ
/
StringDB.p
< prev
next >
Wrap
Text File
|
1989-11-29
|
2KB
|
95 lines
unit TStringDB;
{ ⌐1986-1989 Bill Stackhouse }
{ Stackhouse Software }
{ Natick, MA 01760 }
interface
{$IFC UNDEFINED UseListItem}
{$SETC UseListItem = FALSE}
{$ENDC}
{$IFC UseListItem}
uses
TObject;
type
TStringDB = object(TObject)
fCount: Longint;
fCurOffset: Longint;
fDB: Handle;
procedure TStringDB.Init;
function TStringDB.Count: Longint;
procedure TStringDB.Add (newString: Str255);
function TStringDB.ReadFirst: Str255;
function TStringDB.ReadNext: Str255;
function TStringDB.Error: Integer;
procedure TStringDB.Free;
override;
end;
{$ENDC}
implementation
{$IFC UseListItem}
procedure TStringDB.Init;
begin
SELF.fCount := 0;
SELF.fCurOffset := 0;
SELF.fDB := nil;
end; {TStringDB.Init}
function TStringDB.Count: Longint;
begin
Count := SELF.fCount;
end; {TStringDB.Count}
procedure TStringDB.Add (newString: Str255);
var
stringLength: Integer;
begin
stringLength := Length(newString) + 1;
if SELF.fDB = nil then
SELF.fDB := NewHandle(stringLength)
else
SetHandleSize(SELF.fDB, GetHandleSize(SELF.fDB) + stringLength);
if MemError = noErr then
begin
SELF.fCount := SELF.fCount + 1;
BlockMove(@newString, Ptr(Longint(SELF.fDB^) + SELF.fCurOffset), stringLength);
SELF.fCurOffset := SELF.fCurOffset + stringLength;
end;
end; {TStringDB.Add}
function TStringDB.ReadFirst: Str255;
begin
SELF.fCurOffset := 0;
ReadFirst := SELF.ReadNext;
end; {TStringDB.ReadFirst}
function TStringDB.ReadNext: Str255;
var
theString: Str255;
begin
BlockMove(Ptr(Longint(SELF.fDB^) + SELF.fCurOffset), @theString, 255);
SELF.fCurOffset := SELF.fCurOffset + Length(theString) + 1;
Readnext := theString;
end; {TStringDB.ReadNext}
function TStringDB.Error: Integer;
begin
Error := noErr;
end; {TStringDB.Error}
procedure TStringDB.Free;
begin
DisposHandle(SELF.fDB);
inherited Free;
end; {TStringDB.Free}
{$ENDC}
end.